02. Conditional Statements
If Statements
If Statement
An if
statement is a conditional statement that runs or skips code based on whether a condition is true or false. Here's a simple example.
if phone_balance < 5:
phone_balance += 10
bank_balance -= 10
Let's break this down.
- An
if
statement starts with theif
keyword, followed by the condition to be checked, in this casephone_balance < 5
, and then a colon. The condition is specified in a boolean expression that evaluates to either True or False. - After this line is an indented block of code to be executed if that condition is true. Here, the lines that increment
phone_balance
and decrementbank_balance
only execute if it is true thatphone_balance
is less than 5. If not, the code in thisif
block is simply skipped.
Use Comparison Operators in Conditional Statements
You have learned about Python's comparison operators (e.g. ==
and !=
) and how they are different from assignment operators (e.g. =
). In conditional statements, you want to use comparison operators. For example, you'd want to use if x == 5
rather than if x = 5
. If your conditional statement is causing a syntax error or doing something unexpected, check whether you have written ==
or =
!
If Elif and Else
If, Elif, Else
In addition to the if
clause, there are two other optional clauses often used with an if
statement. For example:
if season == 'spring':
print('plant the garden!')
elif season == 'summer':
print('water the garden!')
elif season == 'fall':
print('harvest the garden!')
elif season == 'winter':
print('stay indoors!')
else:
print('unrecognized season')
if
: Anif
statement must always start with anif
clause, which contains the first condition that is checked. If this evaluates to True, Python runs the code indented in thisif
block and then skips to the rest of the code after theif
statement.elif
:elif
is short for "else if." Anelif
clause is used to check for an additional condition if the conditions in the previous clauses in theif
statement evaluate to False. As you can see in the example, you can have multipleelif
blocks to handle different situations.else
: Last is theelse
clause, which must come at the end of anif
statement if used. This clause doesn't require a condition. The code in anelse
block is run if all conditions above that in theif
statement evaluate to False.
Indentation
Indentation
Some other languages use braces to show where blocks of code begin and end. In Python we use indentation to enclose blocks of code. For example, if
statements use indentation to tell Python what code is inside and outside of different clauses.
In Python, indents conventionally come in multiples of four spaces. Be strict about following this convention, because changing the indentation can completely change the meaning of the code. If you are working on a team of Python programmers, it's important that everyone follows the same indentation convention!
Spaces or Tabs?
The Python Style Guide recommends using 4 spaces to indent, rather than using a tab. Whichever you use, be aware that "Python 3 disallows mixing the use of tabs and spaces for indentation."
Try It Out!
Use Test Run to execute the following code, which includes several examples of if
statements. Experiment with different inputs and see what is printed out. Can you follow the flow of logic to figure out which code lines will get run? If you're not sure, you can insert additional print
statements to help you figure out how it works.
Start Quiz:
#First Example - try changing the value of phone_balance
phone_balance = 10
bank_balance = 50
if phone_balance < 10:
phone_balance += 10
bank_balance -= 10
print(phone_balance)
print(bank_balance)
#Second Example - try changing the value of number
number = 145
if number % 2 == 0:
print("Number " + str(number) + " is even.")
else:
print("Number " + str(number) + " is odd.")
#Third Example - try to change the value of age
age = 35
# Here are the age limits for bus fares
free_up_to_age = 4
child_up_to_age = 18
senior_from_age = 65
# These lines determine the bus fare prices
concession_ticket = 1.25
adult_ticket = 2.50
# Here is the logic for bus fare prices
if age <= free_up_to_age:
ticket_price = 0
elif age <= child_up_to_age:
ticket_price = concession_ticket
elif age >= senior_from_age:
ticket_price = concession_ticket
else:
ticket_price = adult_ticket
message = "Somebody who is {} years old will pay ${} to ride the bus.".format(age, ticket_price)
print(message)